{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第一期 Pandas基础"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.将下面的字典创建为DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = {\"grammer\":[\"Python\",\"C\",\"Java\",\"GO\",\"R\",\"SQL\",\"PHP\",\"Python\"],\n",
    "       \"score\":[1,2,np.nan,4,5,6,7,10]}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GO</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>R</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  score\n",
       "0  Python    1.0\n",
       "1       C    2.0\n",
       "2    Java    NaN\n",
       "3      GO    4.0\n",
       "4       R    5.0\n",
       "5     SQL    6.0\n",
       "6     PHP    7.0\n",
       "7  Python   10.0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.提取含有字符串\"Python\"的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  score\n",
       "0  Python    1.0\n",
       "7  Python   10.0"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# df.where(df.grammer == 'Python').dropna()\n",
    "\n",
    "# 方法二\n",
    "df[df.grammer=='Python']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.输出df的所有列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['grammer', 'score'], dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.修改第二列列名为'popularity'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 方法一\n",
    "# df.columns = ['grammer', 'popularity']\n",
    "\n",
    "# 方法二\n",
    "df.rename(columns={'score': 'popularity'}, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GO</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>R</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "0  Python         1.0\n",
       "1       C         2.0\n",
       "2    Java         NaN\n",
       "3      GO         4.0\n",
       "4       R         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.统计grammer列中每种编程语言出现的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    2\n",
       "C         1\n",
       "SQL       1\n",
       "GO        1\n",
       "R         1\n",
       "Java      1\n",
       "PHP       1\n",
       "Name: grammer, dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# df.groupby(by=['grammer']).grammer.count()\n",
    "\n",
    "# 方法二\n",
    "df.grammer.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.将空值用上下值的平均值填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GO</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>R</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "0  Python         1.0\n",
       "1       C         2.0\n",
       "2    Java         5.0\n",
       "3      GO         4.0\n",
       "4       R         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.fillna(value=df.mean(), inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.提取popularity列中值大于3的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GO</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>R</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "2    Java         5.0\n",
       "3      GO         4.0\n",
       "4       R         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# df[df.popularity > 3]\n",
    "\n",
    "# 方法二\n",
    "df.query('popularity > 3')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 8.按照grammer列进行去除重复值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop_duplicates(subset=['grammer'], inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GO</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>R</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "0  Python         1.0\n",
       "1       C         2.0\n",
       "2    Java         5.0\n",
       "3      GO         4.0\n",
       "4       R         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 9.计算popularity列平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.285714285714286"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.popularity.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.将grammer列转换为list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Python', 'C', 'Java', 'GO', 'R', 'SQL', 'PHP']"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# list(df.grammer)\n",
    "\n",
    "# 方法二\n",
    "df.grammer.to_list()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 11.将DataFrame保存为EXCEL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# df.to_excel()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 12.查看数据行列数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7, 2)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 13.提取popularity列值大于3小于7的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GO</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>R</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "2    Java         5.0\n",
       "3      GO         4.0\n",
       "4       R         5.0\n",
       "5     SQL         6.0"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一：\n",
    "# df[(df.popularity > 3) & (df.popularity < 7)]\n",
    "\n",
    "# 方法二\n",
    "df.query('popularity > 3 & popularity < 7')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 14.交换两列位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>GO</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         5.0    Java\n",
       "3         4.0      GO\n",
       "4         5.0       R\n",
       "5         6.0     SQL\n",
       "6         7.0     PHP"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# df = pd.DataFrame({df.columns[1]: list(df.popularity), df.columns[0]: list(df.grammer)})\n",
    "# df\n",
    "\n",
    "# # 方法二\n",
    "# col = list(df)\n",
    "# col.insert(0, col.pop(col.index('grammer')))\n",
    "# df = df.loc[:, col]\n",
    "# df\n",
    "\n",
    "# 方法三\n",
    "col = list(df)\n",
    "df = df[[col[1], col[0]]]\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 15.提取popularity列最大值所在行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.popularity.idxmax()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 16.查看最后5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>GO</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "2         5.0    Java\n",
       "3         4.0      GO\n",
       "4         5.0       R\n",
       "5         6.0     SQL\n",
       "6         7.0     PHP"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 17.删除最后一行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>GO</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         5.0    Java\n",
       "3         4.0      GO\n",
       "4         5.0       R\n",
       "5         6.0     SQL"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df[:len(df)-1]\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 18.添加一行数据['Perl',6.6] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>GO</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6.6</td>\n",
       "      <td>Perl</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         5.0    Java\n",
       "3         4.0      GO\n",
       "4         5.0       R\n",
       "5         6.0     SQL\n",
       "6         6.6    Perl"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.append({'grammer': 'Perl', 'popularity': 6.6}, ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 19.对数据按照\"popularity\"列值的大小进行排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>GO</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "5         6.0     SQL\n",
       "2         5.0    Java\n",
       "4         5.0       R\n",
       "3         4.0      GO\n",
       "1         2.0       C\n",
       "0         1.0  Python"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by=['popularity'], ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 20.统计grammer列每个字符串的长度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    6\n",
       "1    1\n",
       "2    4\n",
       "3    2\n",
       "4    1\n",
       "5    3\n",
       "Name: grammer, dtype: int64"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# l = [(i, len(i)) for i in df.grammer.values]\n",
    "# l\n",
    "\n",
    "# # 方法二\n",
    "# df.grammer.apply(lambda x: (x, len(x)))\n",
    "\n",
    "# 方法三\n",
    "df.grammer.str.len()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第二期 Pandas数据处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 21.读取本地EXCEL数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2020-03-16 11:30:18</td>\n",
       "      <td>本科</td>\n",
       "      <td>20k-35k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2020-03-16 10:58:48</td>\n",
       "      <td>本科</td>\n",
       "      <td>20k-40k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2020-03-16 10:46:39</td>\n",
       "      <td>不限</td>\n",
       "      <td>20k-35k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2020-03-16 10:45:44</td>\n",
       "      <td>本科</td>\n",
       "      <td>13k-20k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2020-03-16 10:20:41</td>\n",
       "      <td>本科</td>\n",
       "      <td>10k-20k</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           createTime education   salary\n",
       "0 2020-03-16 11:30:18        本科  20k-35k\n",
       "1 2020-03-16 10:58:48        本科  20k-40k\n",
       "2 2020-03-16 10:46:39        不限  20k-35k\n",
       "3 2020-03-16 10:45:44        本科  13k-20k\n",
       "4 2020-03-16 10:20:41        本科  10k-20k"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.read_excel('pandas120.xlsx')\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 22.查看df数据前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2020-03-16 11:30:18</td>\n",
       "      <td>本科</td>\n",
       "      <td>20k-35k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2020-03-16 10:58:48</td>\n",
       "      <td>本科</td>\n",
       "      <td>20k-40k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2020-03-16 10:46:39</td>\n",
       "      <td>不限</td>\n",
       "      <td>20k-35k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2020-03-16 10:45:44</td>\n",
       "      <td>本科</td>\n",
       "      <td>13k-20k</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2020-03-16 10:20:41</td>\n",
       "      <td>本科</td>\n",
       "      <td>10k-20k</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           createTime education   salary\n",
       "0 2020-03-16 11:30:18        本科  20k-35k\n",
       "1 2020-03-16 10:58:48        本科  20k-40k\n",
       "2 2020-03-16 10:46:39        不限  20k-35k\n",
       "3 2020-03-16 10:45:44        本科  13k-20k\n",
       "4 2020-03-16 10:20:41        本科  10k-20k"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 23.将salary列数据转换为最大值与最小值的平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\virtual_environment\\ai\\lib\\site-packages\\ipykernel_launcher.py:6: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2020-03-16 11:30:18</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2020-03-16 10:58:48</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2020-03-16 10:46:39</td>\n",
       "      <td>不限</td>\n",
       "      <td>27500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2020-03-16 10:45:44</td>\n",
       "      <td>本科</td>\n",
       "      <td>16500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2020-03-16 10:20:41</td>\n",
       "      <td>本科</td>\n",
       "      <td>15000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           createTime education salary\n",
       "0 2020-03-16 11:30:18        本科  27500\n",
       "1 2020-03-16 10:58:48        本科  30000\n",
       "2 2020-03-16 10:46:39        不限  27500\n",
       "3 2020-03-16 10:45:44        本科  16500\n",
       "4 2020-03-16 10:20:41        本科  15000"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "for i in range(len(df2)):\n",
    "    salary_list = re.findall('\\d+\\.?\\d*', df2['salary'][i])\n",
    "    salary_mean = (int(salary_list[0]) + int(salary_list[1])) / 2 * 1000\n",
    "    df2['salary'][i] = salary_mean\n",
    "\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 24.将数据根据学历进行分组并计算最高薪资"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "education\n",
       "不限    30000.0\n",
       "大专    15000.0\n",
       "本科    45000.0\n",
       "硕士    37500.0\n",
       "Name: salary, dtype: float64"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.groupby(by=['education']).salary.max()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 25.将createTime列时间转换为月-日"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\virtual_environment\\ai\\lib\\site-packages\\ipykernel_launcher.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  \n",
      "f:\\virtual_environment\\ai\\lib\\site-packages\\pandas\\core\\indexing.py:670: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  iloc._setitem_with_indexer(indexer, value)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>03-16</td>\n",
       "      <td>不限</td>\n",
       "      <td>27500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>16500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>15000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  createTime education salary\n",
       "0      03-16        本科  27500\n",
       "1      03-16        本科  30000\n",
       "2      03-16        不限  27500\n",
       "3      03-16        本科  16500\n",
       "4      03-16        本科  15000"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for i in range(len(df2)):\n",
    "    df2['createTime'][i] = df2.iloc[i, 0].to_pydatetime().strftime('%m-%d')\n",
    "    \n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 26.查看索引、数据类型和内存信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 135 entries, 0 to 134\n",
      "Data columns (total 3 columns):\n",
      " #   Column      Non-Null Count  Dtype \n",
      "---  ------      --------------  ----- \n",
      " 0   createTime  135 non-null    object\n",
      " 1   education   135 non-null    object\n",
      " 2   salary      135 non-null    object\n",
      "dtypes: object(3)\n",
      "memory usage: 3.3+ KB\n"
     ]
    }
   ],
   "source": [
    "df2.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 27.查看数值型列的汇总统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>135</td>\n",
       "      <td>135</td>\n",
       "      <td>135.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>36.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>133</td>\n",
       "      <td>119</td>\n",
       "      <td>19.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       createTime education   salary\n",
       "count         135       135    135.0\n",
       "unique          3         4     36.0\n",
       "top         03-16        本科  30000.0\n",
       "freq          133       119     19.0"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 28.新增一列根据salary将数据分为三组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>rank</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>03-16</td>\n",
       "      <td>不限</td>\n",
       "      <td>27500</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>16500</td>\n",
       "      <td>中</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>15000</td>\n",
       "      <td>中</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  createTime education salary rank\n",
       "0      03-16        本科  27500    高\n",
       "1      03-16        本科  30000    高\n",
       "2      03-16        不限  27500    高\n",
       "3      03-16        本科  16500    中\n",
       "4      03-16        本科  15000    中"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "salary_level = [0, 5000, 20000, 50000]\n",
    "life_level = ['低', '中', '高']\n",
    "\n",
    "df2['rank'] = pd.cut(df2.salary, bins=salary_level, labels=life_level)\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 29.按照salary列对数据降序排列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>rank</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>45000</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>40000</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>101</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>37500</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>37500</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>03-16</td>\n",
       "      <td>硕士</td>\n",
       "      <td>37500</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    createTime education salary rank\n",
       "53       03-16        本科  45000    高\n",
       "37       03-16        本科  40000    高\n",
       "101      03-16        本科  37500    高\n",
       "16       03-16        本科  37500    高\n",
       "131      03-16        硕士  37500    高"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.sort_values(by=['salary'], ascending=False).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 30.取出第33行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>rank</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>03-16</td>\n",
       "      <td>硕士</td>\n",
       "      <td>22500</td>\n",
       "      <td>高</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   createTime education salary rank\n",
       "32      03-16        硕士  22500    高"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 方法一\n",
    "# df2[32:33]\n",
    "\n",
    "# 方法二\n",
    "df2.iloc[32:33, :]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 31.计算salary列的中位数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "17500.0"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.salary.median()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 32.绘制薪资水平频率分布直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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AACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgELq09wQAgI7tU7c92d5T4DCzYsbo9p4CAAAAHZQzRQAAAAAAgEIQRQAAAAAAgEIQRQAAAAAAgEIQRQAAAAAAgEIQRQAAAAAAgEIQRQAAAAAAgELo0tIdf/e732X+/PlZtWpV3nnnnfTv3z+nn356Jk6cmFGjRjW6X21tbebNm5dHHnkkr7zySkqlUqqqqnLWWWflsssuy9FHH93SKQEAAAAAADSq2VGkpqYm3/nOd/L73/9+n+c3bdqUTZs25bHHHsuFF16YG264IRUVFfuMee+99zJlypSsWLFin+dffvnlvPzyy3nooYdy7733ZujQoS34UgAAAAAAABrX7Mtn3XrrreUgcvbZZ+eBBx7Iv/zLv2T+/Pk5++yzkyS//vWvc/fdd++37zXXXJMVK1aksrIy06dPz6JFi7Js2bLMmjUrRx11VLZs2ZKpU6dm165dh/hlAQAAAAAA7KtZUWTTpk2ZN29ekuScc87Jz372s5x66qnp169fTjnllPzsZz/L2LFjkyT33ntv3n333fK+K1euzOOPP54kue666zJ16tQMHjw4AwYMyMSJEzN79uxUVlZm48aN+eUvf9laXx8AAAAAAECSZkaRJ554InV1dUmSK6+8ssEx5513XpJkx44defXVV8vPz549O0lSVVWViRMn7rffyJEjc+655yZJ5s+f35xpAQAAAAAAHFCzosgll1ySJUuWZM6cOTnxxBMPOL5z585JklKplOXLlydJxowZU37+L40bNy5JsnHjxqxdu7Y5UwMAAAAAAGhSs+8pMnDgwIwaNarBbbW1tfnVr35VHrc3nGzYsCE7duxIkowYMaLR1x4+fHj58apVq5o7NQAAAAAAgEZ1OdQX2LVrV7Zs2ZJnn302c+bMybp161JZWZkbbrghlZWVSd4/82OvqqqqRl/r2GOPTefOnbNnz5599gEAAAAAADhUhxxFLr/88jz33HPlvw8cODA/+clPcvrpp5ef2759e/lx7969G59Mly7p3r17du7c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3uCYU045JWeeeWaSZMmSJfts+2AUAQAAAAAAaCvNPlNky5Yt6datW3r16pWqqqpGx33sYx8rj9/rrbfeysaNG5OIIgAAAAAAQNtqdhSZPn16pk+fnp07dzY57rXXXkuS9O7du/zc3rNEKioq0rVr13z/+9/P8uXLs2XLlvTq1SunnHJKJk2alM9//vPNnRYAAAAAAECTWnSj9STp1atXo9s2bdqUpUuXJkk++clPlp/fG0U6deqUSy65pHwZriTZvn17li5dmqVLl+YrX/lKZs2alS5dWjw9AAAAAACAfbR6daivr8/111+f2traJMmkSZPK2/ZGkT179uSEE07ItGnTcsYZZ6SysjLPP/98br/99rz00kt56KGH0qtXr1x33XVNHquiorVnD3Dw9q5B1iKA1mVdBWg+700BWof1FDq+Vo8iN998c5YtW5YkGT9+fEaNGlXeVlNTk549e2bIkCGZO3duevbsWd521lln5bOf/WwmT56c559/PnPnzs3555+fYcOGNXicvn17pnPnZt8nHqDV9et3ZHtPAaBD6d/fugrQUt6bArQO6yl0XBWlUqnUGi9UKpVy880357777kuSDB06NP/7f//vfcLHXnV1dY1eGmvVqlX56le/miT52te+lpkzZzY4buvWHYot0K4qKt5/k7Rt2460zkp6ePivP36yvacAdHD/+p3R7T0FgMNOUd+bArQ26ykc3g7mQ3atcqZITU1NZs6cmd/+9rdJkhNPPDGzZ89uMIgkafJeISeffHKOPfbYbN68OS+88EKTx7UwAR8FpZL1CKA1WVMBWs57U4DWYT2FjuuQrz9VXV2dyZMnl4PIiBEj8s///M855phjWvyagwYNSvL+zdcBAAAAAABawyFFkfXr1+eiiy7Ks88+myT53Oc+l7lz56Zv375N7negK3bV1NQkSbp3734o0wMAAAAAAChrcRR56aWXctFFF+W1115LkkycODF33313o5fMeu655zJ27NiceuqpeeSRRxp93T179mT9+vVJkiFDhrR0egAAAAAAAPtoURR57bXXcvnll5cvb/Wtb30rs2bNavJeIVVVVXn99deze/fuPPlk4zfpfeKJJ/LOO+8kSUaPdpNNAAAAAACgdTQ7itTU1GT69OnZtm1bkmTmzJm58sorD7jfgAEDMmrUqCTJY489lmeeeWa/MVu3bs0P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AAAKrM3PFNmzZ0/WrVuXJPnHf/zHnHPOOY2OPeKII9pqWgAAAAAAQAfX5lHk5Zdfzu7du5MkZ5xxRnr27NnWUwAAAAAAAAqozS+ftffSWT169MjHP/7xtj48AAAAAABQUG0eRVavXp0kOfnkk9OpU7vc0gQAAAAAACigNr981t4octJJJ+WBBx7II488krVr16a2tjZVVVUZN25cpkyZkj59+rT11AAAAAAAgA6sTaNIfX19XnrppSTJvHnzUltbu8/2V199Na+++moefPDB/NM//VNOO+20tpweAAAAAADQgbVpFPl//+//ZdeuXUmSurq6TJo0Keeff34GDRqUrVu3ZsGCBZk9e3aqq6vzjW98Iw8++GD+6q/+qtHXq6hoq5kDAAAAReX/H6A49n6/+76HjqtNo8iWLVsycODAbNmyJbfcckvOPffc8rY+ffpkxowZGTlyZK666qq89dZb+dGPfpSf//znDb5W374907mze5IAAAAAH67+/Y9s7ykAbaxfP9/30FFVlEqlUlsftK6uLl26NN5jpk6dmsWLF6dTp0556qmn0rt37/3GbN26Q7FtwH/98ZPtPQUAAADoUP71O6PbewpAG6moeD+IbNu2I23/v6bAoTqYDzK0+Y3WkzQZRJJk3LhxWbx4cerr67Nq1ar8zd/8TYPjLEwAAADAh83/P0DxlEq+96Gj+khef2rgwIHlx9XV1e04EwAAAAAAoKNolyhyoCt21dbWlh937979w54OAAAAAABQAG0aRWbMmJHPfOYzOfvss5sc9/LLL5cfn3DCCR/2tAAAAAAAgAJo0yjSq1evbN++PevXr8/69esbHFMqlfLoo48mSaqqqvLxj3+8DWcIAAAAAAB0VG0aRc4777zy41mzZjU45n/9r/+VtWvXJkmmTJmSioqKNpkbAAAAAADQsbVpFDnjjDMyfvz4JMny5cvzta99LStWrEh1dXVeeumlXH/99bntttuSJJ/+9Kdz8cUXt+X0AAAAAACADqxLWx/w5ptvzq5du7J48eL88Y9/zB//+Mf9xvz1X/91br/99nTq1C73gQcAAAAAADqgNo8i3bp1yz/90z/lD3/4Qx588MG8+OKL2bFjR3r37p2TTjopX/7ylzN+/HiXzQIAAAAAAFpVm0eRJKmoqMgXv/jFfPGLX2yPwwMAAAAAAAXk+lQAAAAAAEAhiCIAAAAAAEAhiCIAAAAAAEAhiCIAAAAAAEAhtMuN1gEAAACgo/rUbU+29xQ4jKyYMbq9pwCF4kwRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgEEQRAAAAAACgELq09wQAAAAAPso+dduT7T0FAKCVOFMEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAoBFEEAAAAAAAohC7tPQEAAAAAgKL61G1PtvcUOMysmDG6vadwWHOmCAAAAAAAUAiiCAAAAAAAUAiiCAAAAAAAUAiiCAAAAAAAUAiiCAAAAAAAUAiiCAAAAAAAUAhd2uvA69atyy9+8Ys8/fTTqa6uztFHH52TTz45kyZNyujRo9trWgAAAAAAQAfVLlFk4cKF+fa3v53a2tryc1u3bs3ixYuzePHi/P3f/32+973vtcfUAAAAAACADqrNL5+1evXqXH311amtrc3IkSMzd+7cPPXUU/nNb36TcePGJUnmzp2b+++/v62nBgAAAAAAdGBtHkV++tOf5r333svHPvax/PKXv8ynP/3p9OnTJyNHjsydd96Zv/3bv02S/PznP8/OnTvbenoAAAAAAEAH1aZR5JVXXsmTTz6ZJPnGN76Rnj177rO9oqIi1157bSoqKvLmm2/m97//fVtODwAAAAAA6MDaNIrsDSIVFRUZO3Zsg2MGDx6cYcOGJUkWLVrUZnMDAAAAAAA6tjaNImvXrk2SHHfccenXr1+j4z7xiU8kef/+IwAAAAAAAK2hTaPI66+/niSpqqpqctygQYOSJJs3b05tbe2HPi8AAAAAAKDj69KWB9u+fXuS5Kijjmpy3JFHHpkkKZVK2bFjR/r27dvguIqK1p0fAAAAAAB8lPl/8UPTplHkvffeS5J069atyXFdu3bdb5+/dMwxR7bexDqQ9T8c395TAAAAAACAj6Q2vXxW586dk7x/o/WmlEql8uNOndp0igAAAAAAQAfVpsWhR48eSZLdu3c3Oa6mpqb8+IgjjvhQ5wQAAAAAABRDm0aRXr16JUl27NjR5Li33347yftnifTu3ftDnxcAAAAAANDxtWkUOeGEE5IkmzZtanLc3u0DBw50+SwAAAAAAKBVtGlxGDZsWJJk48aN5bNBGrJ69eokyUknndQm8wIAAAAAADq+Lm15sNGjRydJ6uvrs2TJkpx33nn7jfnTn/6Uf/u3f0uSfO5zn2vL6QGHqRtvvDFz587NjTfemAsuuKDJsbW1tZk3b14eeeSRvPLKKymVSqmqqspZZ52Vyy67LEcffXST+69bty6/+MUv8vTTT6e6ujpHH310Tj755EyaNKm8xn0Ujw3QmKVLl+bBBx/M888/n+rq6hxxxBE5/vjjM2bMmFx66aXp27dvg/tZTwH+0+9+97vMnz8/q1atyjvvvJP+/fvn9NNPz8SJEzNq1KhG97OWAjTu3XffzYQJE7J+/fpMmzYtV111VYPjrKVAc1WUSqVSWx5w0qRJeeaZZzJkyJD85je/yZFHHlneViqVMm3atCxcuDB9+vTJE088Ub45O0BDFi1alGnTpqW+vv6AUeS9997LlClTsmLFiga3DxgwIPfee2+GDh3a4PaFCxfm29/+dmpraxvc/vd///f53ve+95E7NkBD6urqcu2112bBggWNjunXr1/uvPPOnH766fs8bz0FeF9NTU2+853v5Pe//32jYy688MLccMMNqaio2Od5aylA077//e/n17/+dZI0GkWspUBLtPkNO2bOnJlOnTpl/fr1mTRpUpYvX57q6uqsXr063/zmN7Nw4cIkyVVXXSWIAE1avHhxvv3tb6e+vv6gxl9zzTVZsWJFKisrM3369CxatCjLli3LrFmzctRRR2XLli2ZOnVqdu3atd++q1evztVXX53a2tqMHDkyc+fOzVNPPZXf/OY3GTduXJJk7ty5uf/++z9yxwZoyG233VYO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DCh/KmPt2rWNjluzZk358fDhw8uPhw0bliTZuHFj+ZMaDVm9enWS5KSTTvpIHBvgQF566aVcdNFFee2115IkEydOzN13373PJbM+yHoK8J/uueeeTJo0KdOmTWty3AcvrdKtWzdrKUArsJYCh0IUAQphzJgxSZIlS5akvr6+wTGLFi1KkhxzzDH7vOkYPXp0kqS+vj5LlixpcN8//elP+bd/+7ck73/K+qNybIDGvPbaa7n88suzffv2JMm3vvWtzJo164CXLbCeArxv69ateeaZZ7J48eJs3ry50XHLli1LkvTs2bP86WJrKUDyj//4j3n22Wcb/fOv//qv5bH/43/8j/LzVVVVSaylQMuJIkAhTJgwIcn7l4mZN2/efttXrlyZBQsWJEkmT56cioqK8ra/+qu/yhlnnJEkufPOO/e77mepVMoPf/jDlEql9OnTJ1/60pc+MscGaEhNTU2mT5+ebdu2JUlmzpyZK6+88qD2tZ4CvO+cc85J8v4142+77bYGxzz66KNZvnx5kuTLX/5y+Ua51lKA928e3rNnz0b/dO/evTy2srKy/PzedclaCrSUKAIUwqhRozJ27NgkyU033ZSf/OQn+dOf/pStW7dm/vz5+frXv566uroMHjw4F1988X77z5w5M506dcr69eszadKkLF++PNXV1Vm9enW++c1vZuHChUmSq666Kj169PjIHBugIQ888ED5dPyzzz47F1xwQd55550m/+xlPQV432mnnVb+j6qHH344U6dOzTPPPJPq6ur8+7//e2699dZ897vfTZIcf/zxueqqq8r7WksBDp21FGipilKpVGrvSQC01IYNGzJu3LgkyY033pgLLrig0bFvvfVWpkyZkhdffLHB7f3798/999+/z03TPuihhx7K9ddfn7q6uga3X3bZZbn22ms/cscG+Etf+MIXyvcROVjr1q0rP7aeAryvpqYmM2bMyB/+8IdGxwwfPjx33HFHBg8evM/z1lKAptXV1ZVvtj5t2rR94vJe1lKgJUQR4LDWnCiSJLW1tZk3b14WLFiQV155JTU1NamqqsqZZ56ZK664Iv369Wty/3Xr1uXee+/N008/nW3btqVHjx45+eSTM2nSpJx11lkf2WMD7LV9+/Z85jOfafZ+H4wiifUU4IMWLlyY+fPnZ+XKlXn77bfTq1evDB8+POPHj8+ECRNSWVnZ4H7WUoDGHUwUSaylQPOJIgAAAAAAQCG4pwgAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAIoggAAAAAAFAI/x/Uf7Y0vFMEOQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.style.use('seaborn-darkgrid')\n",
    "plt.rc('font', size=20)\n",
    "plt.rc('figure', figsize=(20, 8), dpi=100)\n",
    "df2.salary.hist()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 33.绘制薪资水平密度曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:ylabel='Density'>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df2.salary.plot(kind='kde')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 34.删除最后一列categories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>03-16</td>\n",
       "      <td>不限</td>\n",
       "      <td>27500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>16500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>15000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  createTime education salary\n",
       "0      03-16        本科  27500\n",
       "1      03-16        本科  30000\n",
       "2      03-16        不限  27500\n",
       "3      03-16        本科  16500\n",
       "4      03-16        本科  15000"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = df2.iloc[:, 0:3]\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 35.将df的第一列与第二列合并为新的一列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>test1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "      <td>03-16本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "      <td>03-16本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>03-16</td>\n",
       "      <td>不限</td>\n",
       "      <td>27500</td>\n",
       "      <td>03-16不限</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>16500</td>\n",
       "      <td>03-16本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>15000</td>\n",
       "      <td>03-16本科</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  createTime education salary    test1\n",
       "0      03-16        本科  27500  03-16本科\n",
       "1      03-16        本科  30000  03-16本科\n",
       "2      03-16        不限  27500  03-16不限\n",
       "3      03-16        本科  16500  03-16本科\n",
       "4      03-16        本科  15000  03-16本科"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2['test1'] = df2.createTime + df2.education\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 36.将education列与salary列合并为新的一列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>test1</th>\n",
       "      <th>test2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>27500.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>30000.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>03-16</td>\n",
       "      <td>不限</td>\n",
       "      <td>27500</td>\n",
       "      <td>03-16不限</td>\n",
       "      <td>27500.0不限</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>16500</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>16500.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>15000</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>15000.0本科</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  createTime education salary    test1      test2\n",
       "0      03-16        本科  27500  03-16本科  27500.0本科\n",
       "1      03-16        本科  30000  03-16本科  30000.0本科\n",
       "2      03-16        不限  27500  03-16不限  27500.0不限\n",
       "3      03-16        本科  16500  03-16本科  16500.0本科\n",
       "4      03-16        本科  15000  03-16本科  15000.0本科"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2['test2'] = df2.salary.map(lambda x: str(x)) + df2.education\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 37.计算salary最大值与最小值之差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "41500.0"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.salary.max() - df2.salary.min()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 38.将第一行与最后一行拼接"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>test1</th>\n",
       "      <th>test2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>27500</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>27500.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>133</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>19000</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>19000.0本科</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    createTime education salary    test1      test2\n",
       "0        03-16        本科  27500  03-16本科  27500.0本科\n",
       "133      03-16        本科  19000  03-16本科  19000.0本科"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df2.iloc[0:1, :], df2.iloc[-2:-1, :]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 39.将第8行数据添加至末尾"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>createTime</th>\n",
       "      <th>education</th>\n",
       "      <th>salary</th>\n",
       "      <th>test1</th>\n",
       "      <th>test2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>03-16</td>\n",
       "      <td>硕士</td>\n",
       "      <td>37500</td>\n",
       "      <td>03-16硕士</td>\n",
       "      <td>37500.0硕士</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>132</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>30000.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>133</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>19000</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>19000.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>30000</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>30000.0本科</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>03-16</td>\n",
       "      <td>本科</td>\n",
       "      <td>12500</td>\n",
       "      <td>03-16本科</td>\n",
       "      <td>12500.0本科</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    createTime education salary    test1      test2\n",
       "131      03-16        硕士  37500  03-16硕士  37500.0硕士\n",
       "132      03-16        本科  30000  03-16本科  30000.0本科\n",
       "133      03-16        本科  19000  03-16本科  19000.0本科\n",
       "134      03-16        本科  30000  03-16本科  30000.0本科\n",
       "7        03-16        本科  12500  03-16本科  12500.0本科"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.append([df2.iloc[7]]).tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 40.查看每列的数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "createTime    object\n",
       "education     object\n",
       "salary        object\n",
       "test1         object\n",
       "test2         object\n",
       "dtype: object"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.dtypes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 41.将createTime列设置为索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 42.生成一个和df长度相同的随机数dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 43.将上一题生成的dataframe与df合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 44.生成新的一列new为salary列减去之前生成随机数列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 45.检查数据中是否含有任何缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 46.将salary列类型转换为浮点数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 47.计算salary大于10000的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 48.查看每种学历出现的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 49.查看education列共有几种学历"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 50.提取salary与new列的和大于60000的最后3行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第三期 金融数据处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 51.使用绝对路径读取本地Excel数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 52.查看数据前三行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 53.查看每列数据缺失值情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 54.提取日期列含有空值的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 55.输出每列缺失值具体行数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 56.删除所有存在缺失值的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 57.绘制收盘价的折线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 58.同时绘制开盘价与收盘价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 59.绘制涨跌幅的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 60.让直方图更细致"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 61.以data的列名创建一个dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 62.打印所有换手率不是数字的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 63.打印所有换手率为--的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 64.重置data的行号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 65.删除所有换手率为非数字的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 66.绘制换手率的密度曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 67.计算前一天与后一天收盘价的差值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 68.计算前一天与后一天收盘价变化率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 69.设置日期为索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 70.以5个数据作为一个数据滑动窗口，在这个5个数据上取均值(收盘价)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 71.以5个数据作为一个数据滑动窗口，计算这五个数据总和(收盘价)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 72.将收盘价5日均线、20日均线与原始数据绘制在同一个图上"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 73.按周为采样规则，取一周收盘价最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 74.绘制重采样数据与原始数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 75.将数据往后移动5天"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 76.将数据向前移动5天"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 77.使用expending函数计算开盘价的移动窗口均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 78.绘制上一题的移动均值与原始数据折线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 79.计算布林指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 80.计算布林线并绘制"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四期 当Pandas遇上NumPy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 81.导入并查看pandas与numpy版本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 82.从NumPy数组创建DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 83.从NumPy数组创建DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 84.从NumPy数组创建DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 85.将df1，df2，df3按照行合并为新DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 86.将df1，df2，df3按照列合并为新DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 87.查看df所有数据的最小值、25%分位数、中位数、75%分位数、最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 88.修改列名为col1,col2,col3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 89.提取第一列中不在第二列出现的数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 90.提取第一列和第二列出现频率最高的三个数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 91.计算第一列数字前一个与后一个的差值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 92.将col1,col2,clo3三列顺序颠倒"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 93.提取第一列位置在1,10,15的数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 94.查找第一列的局部最大值位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 95. 按行计算df的每一行均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 96.对第二列计算移动平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 97.将数据按照第三列值的大小升序排列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 98.将第一列大于50的数字修改为'高'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 99.计算第二列与第三列之间的欧式距离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第五期 一些补充"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 101.从CSV文件中读取指定数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
